package com.gcb.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.gcb.common.annotation.Excel;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * 项目订单对象 gbc_order_project
 */
@Data
public class OrderProjectVO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 订单ID
     */
    private Long id;

    /**
     * 订单号
     */
    @Excel(name = "订单号")
    private String orderNo;

    /**
     * 归属项目
     */
    private Long projectId;

    /**
     * 项目名称
     */
    @Excel(name = "所属项目名称")
    private String projectName;

    /**
     * 项目类型
     */
    private Integer projectType;

    /**
     * 项目类型名称
     */
    private String projectTypeStr;

    /**
     * 项目开始时间
     */
    private String projectStartDate;

    /**
     * 项目结束时间
     */
    private String projectEndDate;

    /**
     * 项目省份
     */
    private String projectProvince;

    /**
     * 项目城市
     */
    private String projectCity;

    /**
     * 项目地址
     */
    private String projectAddress;

    /**
     * 项目地址经度
     */
    private String projectLongitude;

    /**
     * 项目地址纬度
     */
    private String projectLatitude;

    /**
     * 归属企业
     */
    private Long companyId;

    /**
     * 归属企业名称
     */
    @Excel(name = "归属企业")
    private String companyName;

    /**
     * 归属运营商
     */
    private Long operatorId;

    /**
     * 归属运营商名称
     */
    @Excel(name = "归属运营商")
    private String operatorName;

    /**
     * 需求船舶 船舶类型:数量,船舶类型:数量
     */
    private String shipNeeded;

    /**
     * 需求船舶
     */
    private List<ShipNeededVO> shipNeededArray;

    private String shipNeededStr;

    /**
     * 需求船舶名称
     */
    @Excel(name = "需求船舶")
    private String shipNeededName;

    /**
     * 需求船舶总数量
     */
    @Excel(name = "总数量")
    private int shipNeededTotalNum;

    /**
     * 订单有效期起
     */
    @Excel(name = "订单有效期起")
    private String startDate;

    /**
     * 订单有效期止
     */
    @Excel(name = "订单有效期止")
    private String endDate;

    /**
     * 联系人
     */
    @Excel(name = "联系人")
    private String contacts;

    /**
     * 联系人手机号
     */
    @Excel(name = "联系人手机号")
    private String contactPhone;

    /**
     * 备注
     */
    private String remark;

    /**
     * 状态
     */
    private Integer state;

    /**
     * 状态名称
     */
    @Excel(name = "订单状态")
    private String stateStr;

    /**
     * 创建类型
     */
    private Integer createType;

    /**
     * 创建类型名称
     */
    @Excel(name = "创建类型")
    private String createTypeStr;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 创建人
     */
    private Long createBy;

    /**
     * 创建人姓名
     */
    @Excel(name = "创建人")
    private String createName;

    /**
     * 创建人手机号
     */
    @Excel(name = "创建人手机号")
    private String createPhone;

    /**
     * 更新时间
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    /**
     * 更新人
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Long updateBy;

    /**
     * 更新人姓名
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String updateName;

    /**
     * 更新人手机号
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String updatePhone;

    /**
     * 距离
     */
    private double distance;

    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date stopTime;

    /**
     * 取消时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date cancelTime;

    /**
     * 取消原因
     */
    private String cancelReason;
}
